package register;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class HibernateUtil {

        private static final SessionFactory sessionFactory;

        static {
                try {
                        // Create the SessionFactory
                       // File file = new File("D:\\util\\hibernate.cfg.xml");
                        Configuration config = new Configuration().configure();
                        sessionFactory = config.buildSessionFactory();
                } catch (Throwable ex) {
                        ex.printStackTrace();
                        //log.error("Initial SessionFactory creation failed.", ex);
                        throw new ExceptionInInitializerError(ex);
                }
        }

        public static final ThreadLocal session = new ThreadLocal();

        public static Session currentSession() throws HibernateException {
                Session s = (Session) session.get();
                // Open a new Session, if this Thread has none yet
                if (s == null||!s.isOpen()) {
                        s = sessionFactory.openSession();
                        session.set(s);
                }
                return s;
        }

        public static void closeSession() throws HibernateException {
                Session s = (Session) session.get();
                session.set(null);
                if (s != null)
                        s.close();
        }
}